具体理论学习推导参考Wikipedia,Inverse Transform Method,PBRT-P643,
下文中的CDF与PDF等概率论术语定义可在概率论与数理统计等书中找到
生成一个随机数满足一个已知解析式的分布,是一个非常常见的需求(C++11已经内部提供不少给定分布),这里将推导如何将最常见的均匀分布随机数转换为其他已知解析式的分布。
先把结论放在这里,若有一随机变量X满足分布PDF(对应一CDF),使用一个均匀分布的随机变量Y,则Y对该CDF的反函数进行采样的结果满足PDF。
以下内容摘自Wikipedia
已知有分布F(x)=1−e−λx,其中x⩾0,可以求得CDF的反函数,如下图所示。
x=F−1(y)=−λ1(1−y)

其中yi是满足区间(0, 1)均匀分布的随机数(即,Y~U(0, 1)),这里可以明显看到由反函数求得的X的分布情况,在越接近0的位置分布的越多,越背离则越稀疏,满足对于结果的设想。
证明
若有CDF满足F(x)=Pr{X⩽x},则起反函数F−1满足
F−1(y)=min{x:F(x)⩾y},y∈[0,1]
之所以使用下确界的原因是,F(x)满足右连续且单调不减
令X=F−1(U)其中U满足在区间[0,1]上连续均匀分布,现要证
Pr{X⩽x}=F(x),x∈ℜ
则要证Pr{F−1(U)⩽x}=F(x)成立。此处F连续且单调不减,则同时对不等式套用F不等式成立
{F−1(U)⩽x}={U⩽F(x)}
则有Pr{U⩽F(x)}成立,下图中描述了U⩽F(x)的概率就等于F(x)本身

则得证
Pr{F−1(U)⩽x}=F(x)
有了Inverse CDF这项工具,就可以很方便的将已有的满足均匀分布的随机数转化为满足一已知PDF的随机数分布。
二维随机变量中条件概率直观理解(其中关于联合以及边缘分布律/概率密度分布的概念可以在上海交大的PPT以及Wikipedia中找到)。在渲染中主要在重要性采样中会用到二维随机变量的这些概念
离散条件分布和连续条件分布的定义都可以在引用中看到,这里只关注离散型二维随机变量的分布。
首先有联合=条件*边缘的定义,当然同时要满足∑x∑yP(X=x,Y=y)=1的前提条件。
P(X=x,Y=y)=P(Y=y∣X=x)P(X=x)=P(X=x∣Y=y)P(Y=y)
若X,Y满足相互独立,那么也满足以下等式
P(X=x,Y=y)=P(Y=y)P(X=x)
在渲染中为了对图像上亮度更高的点有更高的概率采样到,那么势必要生成满足图像PDF的二维随机变量。此处易证在图像的采样上,X与Y二者之间非相互独立。

此图中P(X=x,Y=y)=b+8ab,而P(X=x)=P(Y=y)=b+4ab,容易看出P(X=x,Y=y)̸=P(Y=y)P(X=x)
那么求解上述就只剩下一种途径,就是对于给定图像求解边缘以及条件分布函数。这也是PBRT中使用边缘+条件来生成联合的原因。
以下使用OF测试得到的可视化结果,因为一维采样重建可以在二维中体现因此此处不做一维对比。具体实现办法可以在PBRT的Distribution中看到详细过程
左右为不同采样数量但可以明显发现在图像中亮度较高位置采样数量更多,采样结果明显偏向于向图像亮处。

这里图像较暗是因为没有采用Tone Mapping的关系,但因为不影响全局显示,因此没做特殊处理。此处若使用普通PNG等被截断过的图像则无法有效的对图像上高光部分进行有效采样。